home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / net-snmp-config < prev    next >
Text File  |  2009-10-02  |  27KB  |  736 lines

  1. #!/bin/bash
  2. #
  3. # $Id: net-snmp-config.in 16569 2007-06-29 22:18:27Z tanders $
  4. #
  5. # this shell script is designed to merely dump the configuration
  6. # information about how the net-snmp package was compiled.  The
  7. # information is particularily useful for applications that need to
  8. # link against the net-snmp libraries and hence must know about any
  9. # other libraries that must be linked in as well.
  10.  
  11. check_build_dir()
  12. {
  13.       build_dir=$1
  14.  
  15.       if test "x$build_dir" = "x" ; then
  16.          echo "You must specify a build directory."
  17.          exit 1
  18.       fi
  19.       # is it the src dir?
  20.       if test -f $build_dir/net-snmp-config.in ; then
  21.          return
  22.       fi
  23.       # make sure we can find build dir
  24.       if test ! -d $build_dir/snmplib/.libs ; then
  25.          echo "$build_dir does not appear to be a build directory."
  26.          exit 1
  27.       fi
  28. }
  29.  
  30. prefix=/usr
  31. exec_prefix=/usr
  32. includedir=${prefix}/include
  33. libdir=${exec_prefix}/lib
  34. NSC_LDFLAGS="-Wl,-Bsymbolic-functions"
  35. NSC_INCLUDEDIR=${includedir}
  36. NSC_LIBDIR=-L${libdir}
  37. NSC_LIBS=""
  38. NSC_AGENTLIBS=" -Wl,-E"
  39. NSC_PREFIX=$prefix
  40. NSC_EXEC_PREFIX=$exec_prefix
  41. NSC_SRCDIR=.
  42. NSC_INCDIR=${NSC_PREFIX}/include
  43. NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers -lnetsnmp"
  44. NSC_BASE_AGENT_LIBS="-lnetsnmpmibs -lnetsnmpagent -lnetsnmphelpers -lnetsnmp"
  45. NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs agent/helpers/.libs"
  46. NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a agent/helpers/.libs/libnetsnmphelpers.a snmplib/.libs/libnetsnmp.a"
  47.  
  48. if test "x$NSC_SRCDIR" = "x." ; then
  49.    NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
  50. fi
  51.  
  52. if test "x$1" = "x"; then
  53.   usage="yes"
  54. else
  55.   while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
  56.   case "$1" in
  57.     -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
  58.     *) optarg= ;;
  59.   esac
  60.  
  61.   case $1 in
  62.     --prefix=*)
  63.       prefix=$optarg
  64.       NSC_PREFIX=${prefix}
  65.       NSC_INCLUDEDIR=${prefix}/include
  66.       NSC_LIBDIR=-L${prefix}/lib
  67.       ;;
  68.  
  69.     --exec-prefix=*)
  70.       exec_prefix=$optarg
  71.       NSC_EXEC_PREFIX=${exec_prefix}
  72.       NSC_LIBDIR=-L${exec_prefix}/lib
  73.       ;;
  74.  
  75.     --debug-tokens|--deb*|--dbg*)
  76.       echo "find $NSC_SRCDIR -name \"*.c\" -print | xargs grep DEBUGMSGT | grep \\\" | cut -f 2 -d\\\" | sort -u"
  77.       if test "x$NSC_SRCDIR" != "xNET-SNMP-SOURCE-DIR" ; then
  78.         /usr/bin/find $NSC_SRCDIR -name "*.c" -print | xargs grep DEBUGMSGT | grep \" | cut -f 2 -d\" | sort -u
  79.       fi
  80.       ;;
  81.     --indent-options|--in*)
  82.       echo "indent -orig -nbc -bap -nut -nfca `(cd $NSC_INCDIR/net-snmp; perl -n -e 'print "-T $1 " if (/}\s*(netsnmp_\w+)\s*;/);' */*.h)`"
  83.       ;;
  84.     --configure-options|--con*)
  85.       echo " '--build=i486-linux-gnu' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--localstatedir=/var' '--libexecdir=${prefix}/lib/net-snmp' '--disable-maintainer-mode' '--disable-dependency-tracking' '--srcdir=.' '--prefix=/usr' '--sysconfdir=/etc' '--mandir=/usr/share/man' '--with-persistent-directory=/var/lib/snmp' '--enable-ucd-snmp-compatibility' '--enable-shared' '--with-cflags=-g -O2 -g -Wall -O2 -DNETSNMP_USE_INLINE' '--with-perl-modules=INSTALLDIRS=vendor' '--enable-as-needed' '--enable-ipv6' '--with-logfile=none' '--without-rpm' '--with-libwrap' '--with-openssl' '--without-dmalloc' '--without-efence' '--without-rsaref' '--with-sys-contact=root' '--with-sys-location=Unknown' '--with-mib-modules=host smux ucd-snmp/dlmod ucd-snmp/diskio ucd-snmp/lmSensors ' '--enable-mfd-rewrites' '--with-mnttab=/etc/mtab' '--with-defaults' 'build_alias=i486-linux-gnu' 'CC=cc' 'CFLAGS=-g -O2 -g -Wall -O2' 'LDFLAGS=-Wl,-Bsymbolic-functions' 'CPPFLAGS='"
  86.       ;;
  87.     --snmpd-module-list|--mod*)
  88. echo  ucd-snmp/dlmod ucd-snmp/diskio ucd-snmp/lmSensors host/hr_system host/hr_storage host/hr_device host/hr_other host/hr_proc host/hr_network host/hr_print host/hr_disk host/hr_partition host/hr_filesys host/hr_swrun host/hr_swinst smux/smux util_funcs snmpv3/snmpEngine snmpv3/snmpMPDStats snmpv3/usmStats snmpv3/usmConf snmpv3/usmUser mibII/system_mib mibII/sysORTable mibII/at mibII/ip mibII/snmp_mib mibII/tcp mibII/icmp mibII/udp mibII/vacm_vars mibII/setSerialNo mibII/ipv6 ucd-snmp/proc ucd-snmp/versioninfo ucd-snmp/pass ucd-snmp/pass_persist ucd-snmp/disk ucd-snmp/loadave agent/extend ucd-snmp/errormib ucd-snmp/file ucd-snmp/proxy ucd-snmp/logmatch ucd-snmp/memory ucd-snmp/vmstat notification/snmpNotifyTable notification/snmpNotifyFilterProfileTable notification-log-mib/notification_log target/snmpTargetAddrEntry target/snmpTargetParamsEntry target/target target/target_counters agent/nsTransactionTable agent/nsModuleTable agent/nsDebug agent/nsCache agent/nsLogging agent/nsVacmAccessTable agentx/master agentx/subagent disman/event/mteScalars disman/event/mteTrigger disman/event/mteTriggerTable disman/event/mteTriggerDeltaTable disman/event/mteTriggerExistenceTable disman/event/mteTriggerBooleanTable disman/event/mteTriggerThresholdTable disman/event/mteTriggerConf disman/event/mteEvent disman/event/mteEventTable disman/event/mteEventSetTable disman/event/mteEventNotificationTable disman/event/mteEventConf disman/event/mteObjects disman/event/mteObjectsTable disman/event/mteObjectsConf disman/schedule/schedCore disman/schedule/schedConf disman/schedule/schedTable utilities/override utilities/execute utilities/iquery hardware/memory/hw_mem hardware/memory/memory_linux hardware/cpu/cpu hardware/cpu/cpu_linux mibII/kernel_linux mibII/ipAddr mibII/var_route mibII/route_write mibII/tcpTable mibII/udpTable mibII/vacm_context mibII/vacm_conf ip-mib/ip_scalars header_complex snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable agentx/protocol agentx/client agentx/master_admin agentx/agentx_config if-mib/ifTable/ifTable if-mib/ifXTable/ifXTable ip-mib/ipAddressTable/ipAddressTable ip-mib/inetNetToMediaTable/inetNetToMediaTable ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access ip-mib/ipSystemStatsTable/ipSystemStatsTable ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable tcp-mib/tcpConnectionTable/tcpConnectionTable tcp-mib/tcpListenerTable/tcpListenerTable udp-mib/udpEndpointTable/udpEndpointTable snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access if-mib/data_access/interface if-mib/ifTable/ifTable_interface if-mib/ifTable/ifTable_data_access if-mib/ifXTable/ifXTable_interface if-mib/ifXTable/ifXTable_data_access ip-mib/ipAddressTable/ipAddressTable_interface ip-mib/ipAddressTable/ipAddressTable_data_access ip-mib/data_access/arp_common ip-mib/data_access/arp_linux ip-mib/data_access/systemstats_common ip-mib/data_access/systemstats_linux ip-mib/data_access/scalars_linux ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access tcp-mib/data_access/tcpConn_common tcp-mib/data_access/tcpConn_linux tcp-mib/tcpConnectionTable/tcpConnectionTable_interface tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access tcp-mib/tcpListenerTable/tcpListenerTable_interface tcp-mib/tcpListenerTable/tcpListenerTable_data_access udp-mib/udpEndpointTable/udpEndpointTable_interface udp-mib/udpEndpointTable/udpEndpointTable_data_access if-mib/data_access/interface_linux if-mib/data_access/interface_ioctl ip-mib/data_access/ipaddress_common ip-mib/data_access/ipaddress_linux ip-forward-mib/data_access/route_common ip-forward-mib/data_access/route_linux ip-forward-mib/data_access/route_ioctl udp-mib/data_access/udp_endpoint_common udp-mib/data_access/udp_endpoint_linux ip-mib/data_access/ipaddress_ioctl
  89.       ;;
  90.     --default-mibs|--mibs|--MIBS)
  91.       echo :HOST-RESOURCES-MIB:HOST-RESOURCES-TYPES:UCD-DLMOD-MIB:UCD-DISKIO-MIB:LM-SENSORS-MIB:IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB:NOTIFICATION-LOG-MIB:DISMAN-EVENT-MIB:DISMAN-SCHEDULE-MIB:UCD-SNMP-MIB:UCD-DEMO-MIB:SNMP-TARGET-MIB:NET-SNMP-AGENT-MIB:SNMP-FRAMEWORK-MIB:SNMP-MPD-MIB:SNMP-USER-BASED-SM-MIB:SNMP-VIEW-BASED-ACM-MIB:SNMP-COMMUNITY-MIB:IPV6-ICMP-MIB:IPV6-MIB:IPV6-TCP-MIB:IPV6-UDP-MIB:IP-FORWARD-MIB:NET-SNMP-EXTEND-MIB:SNMP-NOTIFICATION-MIB:SNMPv2-TM:NET-SNMP-VACM-MIB
  92.       ;;
  93.     --default-mibdirs|--mibdirs|--MIBDIRS)
  94.       echo $HOME/.snmp/mibs:/usr/share/snmp/mibs
  95.       ;;
  96.     --snmpconfpath|--SNMPCONFPATH)
  97.       echo "/etc/snmp:/usr/share/snmp:/usr/lib/snmp:$HOME/.snmp:/var/lib/snmp"
  98.       ;;
  99.     --persistent-directory|--persistent-dir)
  100.       echo /var/lib/snmp
  101.       ;;
  102.     --perlprog|--perl)
  103.       echo /usr/bin/perl
  104.       ;;
  105.     #################################################### compile
  106.     --base-cflags)
  107.       echo -DNETSNMP_ENABLE_IPV6 -g -O2 -g -Wall -O2 -DNETSNMP_USE_INLINE -Ulinux -Dlinux=linux   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl/5.10/CORE  -I${NSC_INCLUDEDIR}
  108.       ;;
  109.     --cflags|--cf*)
  110.       echo -DNETSNMP_ENABLE_IPV6 -g -O2 -g -Wall -O2 -DNETSNMP_USE_INLINE -Ulinux -Dlinux=linux    -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl/5.10/CORE  -I. -I${NSC_INCLUDEDIR}
  111.       ;;
  112.     --srcdir)
  113.       echo $NSC_SRCDIR
  114.       ;;
  115.     #################################################### linking
  116.     --libdir|--lib-dir)
  117.       echo $NSC_LIBDIR
  118.       ;;
  119.     --ldflags|--ld*)
  120.       echo $NSC_LDFLAGS
  121.       ;;
  122.     --build-lib-dirs)
  123.       shift
  124.       build_dir=$1
  125.       check_build_dir $build_dir
  126.       for dir in $NSC_SRC_LIBDIRS; do
  127.           result="$result -L$build_dir/$dir"
  128.       done
  129.       echo $result
  130.       ;;
  131.     --build-lib-deps)
  132.       shift
  133.       build_dir=$1
  134.       check_build_dir $build_dir
  135.       for dir in $NSC_SRC_LIBDEPS; do
  136.           result="$result $build_dir/$dir"
  137.       done
  138.       echo $result
  139.       ;;
  140.     --build-includes)
  141.       shift
  142.       build_dir=$1
  143.       check_build_dir $build_dir
  144.       result="-I$build_dir/include"
  145.       if test "$build_dir" != "$NSC_SRCDIR" -a "$NSC_SRCDIR" != "NET-SNMP-SOURCE-DIR"
  146.       then
  147.           result="$result -I$NSC_SRCDIR/include"
  148.       fi
  149.       echo $result
  150.       ;;
  151.     #################################################### client lib
  152.     --libs)
  153.       # use this one == --netsnmp-libs + --external-libs
  154.       echo $NSC_LDFLAGS $NSC_LIBDIR -lnetsnmp $NSC_LIBS
  155.       ;;
  156.     --netsnmp-libs)
  157.       echo $NSC_LIBDIR -lnetsnmp
  158.       ;;
  159.     --external-libs)
  160.       echo $NSC_LDFLAGS $NSC_LIBS
  161.       ;;
  162.     #################################################### agent lib
  163.     --base-agent-libs)
  164.       echo $NSC_BASE_AGENT_LIBS
  165.       ;;
  166.     --base-subagent-libs)
  167.       echo $NSC_BASE_SUBAGENT_LIBS
  168.       ;;
  169.     --agent-libs)
  170.       # use this one == --netsnmp-agent-libs + --external-libs
  171.       echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_BASE_AGENT_LIBS $NSC_AGENTLIBS
  172.       ;;
  173.     --netsnmp-agent-libs)
  174.       echo $NSC_LIBDIR $NSC_BASE_AGENT_LIBS
  175.       ;;
  176.     --external-agent-libs)
  177.       echo $NSC_LDFLAGS $NSC_AGENTLIBS
  178.       ;;
  179.     ####################################################
  180.     --version|--ver*)
  181.       echo 5.4.1
  182.       ;;
  183.     --help)
  184.       usage="yes"
  185.       ;;
  186.     --prefix|--pre*)
  187.       echo $NSC_PREFIX
  188.       ;;
  189.     --exec-prefix)
  190.       echo $NSC_EXEC_PREFIX
  191.       ;;
  192.     ####################################################
  193.     --create-snmpv3-user)
  194.       if /bin/ps -e | egrep ' snmpd *$' > /dev/null 2>&1 ; then
  195.          echo "Apparently at least one snmpd demon is already running."
  196.          echo "You must stop them in order to use this command."
  197.          exit 1
  198.       fi
  199.  
  200.       Aalgorithm="MD5"
  201.       Xalgorithm="DES"
  202.       token=rwuser
  203.       shift
  204.       while test "x$done" = "x" -a "x$1" != "x" ; do
  205.     case $1 in
  206.         -A|-a)
  207.         shift
  208.         if test "x$1" = "x" ; then
  209.             echo "You must specify an authentication algorithm or pass phrase"
  210.             exit 1
  211.         fi
  212.             case $1 in
  213.                 MD5|SHA)
  214.             Aalgorithm=$1
  215.             shift
  216.             ;;
  217.                 md5|sha)
  218.             Aalgorithm=`echo $1 | tr a-z A-Z`
  219.             shift
  220.             ;;
  221.                 *)
  222.             apassphrase=$1
  223.             shift
  224.             ;;
  225.         esac
  226.         ;;
  227.         -X|-x)
  228.         shift
  229.         if test "x$1" = "x" ; then
  230.             echo "You must specify an encryption algorithm or pass phrase"
  231.             exit 1
  232.         fi
  233.             case $1 in
  234.                 DES|AES|AES128)
  235.             Xalgorithm=$1
  236.             shift
  237.             ;;
  238.                 des|aes|aes128)
  239.             Xalgorithm=`echo $1 | tr a-z A-Z`
  240.             shift
  241.             ;;
  242.                 *)
  243.             xpassphrase=$1
  244.             shift
  245.             ;;
  246.         esac
  247.         ;;
  248.         -ro)
  249.             token="rouser"
  250.         shift
  251.         ;;
  252.          -*)
  253.         echo "unknown suboption to --create-snmpv3-user: $1"
  254.         exit 1
  255.         ;;
  256.         *)
  257.             done=1
  258.         ;;
  259.     esac
  260.       done
  261.       
  262.       if test "x$1" = "x" ; then
  263.           prompt=yes
  264.       echo "Enter a SNMPv3 user name to create: "
  265.       read user
  266.       else
  267.           user=$1
  268.           shift
  269.       fi
  270.       if test "x$user" = "x" ; then
  271.           echo "You must specify a user name"
  272.       exit 1
  273.       fi
  274.  
  275.       if test "x$apassphrase" = "x" ; then
  276.           prompt=yes
  277.       echo "Enter authentication pass-phrase: "
  278.       read apassphrase
  279.       fi
  280.       if test "x$apassphrase" = "x" ; then
  281.           echo "You must specify an authentication pass-phrase"
  282.       exit 1
  283.       fi
  284.  
  285.       if test "x$prompt" = "xyes" -a "x$xpassphrase" = "x" ; then
  286.       echo "Enter encryption pass-phrase: "
  287.       echo "  [press return to reuse the authentication pass-phrase]"
  288.       read xpassphrase
  289.       fi
  290.  
  291.       outdir="/var/lib/snmp"
  292.       outfile="$outdir/snmpd.conf"
  293.       line="createUser $user $Aalgorithm \"$apassphrase\" $Xalgorithm $xpassphrase"
  294.       echo "adding the following line to $outfile:"
  295.       echo "  " $line
  296.       # in case it hasn't ever been started yet, start it.
  297.       if test ! -d $outdir ; then
  298.           mkdir $outdir
  299.       fi
  300.       if test ! -d $outfile ; then
  301.           touch $outfile
  302.       fi
  303.       echo $line >> $outfile
  304.  
  305.       outfile="${prefix}/share/snmp/snmpd.conf"
  306.       line="$token $user"
  307.       echo "adding the following line to $outfile:"
  308.       echo "  " $line
  309.       if test ! -d $outfile ; then
  310.           touch $outfile
  311.       fi
  312.       echo $line >> $outfile
  313.       ;;
  314.  
  315.     ####################################################
  316.     --compile-subagent)
  317.       shift
  318.       while test "x$done" = "x" -a "x$1" != "x" ; do
  319.     case $1 in
  320.             --norm)
  321.             norm=1
  322.             shift
  323.         ;;
  324.             --cflags)
  325.             shift
  326.             if test "x$1" = "x" ; then
  327.                 echo "You must specify the extra cflags"
  328.                 exit 1
  329.             fi
  330.             cflags=$1
  331.             echo "setting extra cflags: $cflags"
  332.             shift
  333.         ;;
  334.             --ldflags)
  335.             shift
  336.             if test "x$1" = "x" ; then
  337.                 echo "You must specify the extra ldflags"
  338.                 exit 1
  339.             fi
  340.             ldflags=$1
  341.             echo "setting extra ldflags: $ldflags"
  342.             shift
  343.         ;;
  344.          --*)
  345.         echo "unknown suboption to --compile-subagent: $1"
  346.         exit 1
  347.         ;;
  348.         *)
  349.                 if test "x$outname" = "x"; then
  350.                   outname=$1
  351.                   shift
  352.                 else
  353.               done=1
  354.                 fi
  355.         ;;
  356.     esac
  357.       done
  358.       tmpfile=netsnmptmp.$$.c
  359.       if test -f $tmpfile; then
  360.     echo "Ack.  Can't create $tmpfile: already exists"
  361.     exit 1
  362.       fi
  363.       echo "generating the tmporary code file: $tmpfile"
  364.       rm -f $tmpfile
  365.       cat > $tmpfile <<EOF
  366. /* generated from net-snmp-config */
  367. #include <net-snmp/net-snmp-config.h>
  368. #ifdef HAVE_SIGNAL
  369. #include <signal.h>
  370. #endif /* HAVE_SIGNAL */
  371. #include <net-snmp/net-snmp-includes.h>
  372. #include <net-snmp/agent/net-snmp-agent-includes.h>
  373. EOF
  374.  
  375.     # If we were only given a single filename
  376.     # (and no explicit output name)
  377.     # then use that as the base of the output name
  378.     #
  379.     # If we weren't even given that, then bomb out
  380.     if test "x$1" = "x"; then
  381.       if test "x$outname" = "x"; then
  382.         echo "No MIB module codefile specified"
  383.         rm -f $tmpfile
  384.         exit 1
  385.       else
  386.         cfiles=$outname
  387.         outname=`basename $cfiles | sed 's/\.[co]$//'`
  388.         if test -f $outname.h; then
  389.           if grep "init_$outname" $outname.h; then
  390.             echo "  #include \"$outname.h\"" >> $tmpfile
  391.           fi
  392.         fi
  393.       fi
  394.     fi
  395.  
  396.     # add include files
  397.     while test "$1" != ""; do
  398.       cfiles="$cfiles $1"
  399.       name=`basename $1 | sed 's/\.[co]$//'`
  400.       if test -f $name.h; then
  401.         if grep "init_$name" $name.h; then
  402.           echo "  #include \"$name.h\"" >> $tmpfile
  403.         fi
  404.       fi
  405.       shift
  406.     done
  407.  
  408.       cat >> $tmpfile <<EOF
  409. const char *app_name = "$outname";
  410.  
  411. extern int netsnmp_running;
  412.  
  413. #ifdef __GNUC__
  414. #define UNUSED __attribute__((unused))
  415. #else
  416. #define UNUSED
  417. #endif
  418.  
  419. RETSIGTYPE
  420. stop_server(UNUSED int a) {
  421.     netsnmp_running = 0;
  422. }
  423.  
  424. static void
  425. usage(const char *prog)
  426. {
  427.     fprintf(stderr,
  428.             "USAGE: %s [OPTIONS]\n"
  429.             "\n"
  430.             "OPTIONS:\n", prog);
  431.  
  432.     fprintf(stderr,
  433.             "  -d\t\t\tdump all traffic\n"
  434.             "  -D TOKEN[,...]\tturn on debugging output for the specified "
  435.             "TOKENs\n"
  436.             "\t\t\t   (ALL gives extremely verbose debugging output)\n"
  437.             "  -f\t\t\tDo not fork() from the calling shell.\n"
  438.             "  -h\t\t\tdisplay this help message\n"
  439.             "  -H\t\t\tdisplay a list of configuration file directives\n"
  440.             "  -L LOGOPTS\t\tToggle various defaults controlling logging:\n");
  441.     snmp_log_options_usage("\t\t\t  ", stderr);
  442. #ifndef DISABLE_MIB_LOADING
  443.     fprintf(stderr,
  444.             "  -m MIB[:...]\t\tload given list of MIBs (ALL loads "
  445.             "everything)\n"
  446.             "  -M DIR[:...]\t\tlook in given list of directories for MIBs\n");
  447. #endif /* DISABLE_MIB_LOADING */
  448. #ifndef DISABLE_MIB_LOADING
  449.     fprintf(stderr,
  450.             "  -P MIBOPTS\t\tToggle various defaults controlling mib "
  451.             "parsing:\n");
  452.     snmp_mib_toggle_options_usage("\t\t\t  ", stderr);
  453. #endif /* DISABLE_MIB_LOADING */
  454.     fprintf(stderr,
  455.             "  -v\t\t\tdisplay package version number\n"
  456.             "  -x TRANSPORT\tconnect to master agent using TRANSPORT\n");
  457.     exit(1);
  458. }
  459.  
  460. static void
  461. version(void)
  462. {
  463.     fprintf(stderr, "NET-SNMP version: %s\n", netsnmp_get_version());
  464.     exit(0);
  465. }
  466.  
  467. int
  468. main (int argc, char **argv)
  469. {
  470.   int arg;
  471.   char* cp = NULL;
  472.   int dont_fork = 0, do_help = 0;
  473.  
  474.   while ((arg = getopt(argc, argv, "dD:fhHL:"
  475. #ifndef DISABLE_MIB_LOADING
  476.                        "m:M:"
  477. #endif /* DISABLE_MIB_LOADING */
  478.                        "n:"
  479. #ifndef DISABLE_MIB_LOADING
  480.                        "P:"
  481. #endif /* DISABLE_MIB_LOADING */
  482.                        "vx:")) != EOF) {
  483.     switch (arg) {
  484.     case 'd':
  485.       netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
  486.                              NETSNMP_DS_LIB_DUMP_PACKET, 1);
  487.       break;
  488.  
  489.     case 'D':
  490.       debug_register_tokens(optarg);
  491.       snmp_set_do_debugging(1);
  492.       break;
  493.  
  494.     case 'f':
  495.       dont_fork = 1;
  496.       break;
  497.  
  498.     case 'h':
  499.       usage(argv[0]);
  500.       break;
  501.  
  502.     case 'H':
  503.       do_help = 1;
  504.       break;
  505.  
  506.     case 'L':
  507.       if (snmp_log_options(optarg, argc, argv) < 0) {
  508.         exit(1);
  509.       }
  510.       break;
  511.  
  512. #ifndef DISABLE_MIB_LOADING
  513.     case 'm':
  514.       if (optarg != NULL) {
  515.         setenv("MIBS", optarg, 1);
  516.       } else {
  517.         usage(argv[0]);
  518.       }
  519.       break;
  520.  
  521.     case 'M':
  522.       if (optarg != NULL) {
  523.         setenv("MIBDIRS", optarg, 1);
  524.       } else {
  525.         usage(argv[0]);
  526.       }
  527.       break;
  528. #endif /* DISABLE_MIB_LOADING */
  529.  
  530.     case 'n':
  531.       if (optarg != NULL) {
  532.         app_name = optarg;
  533.         netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
  534.                               NETSNMP_DS_LIB_APPTYPE, app_name);
  535.       } else {
  536.         usage(argv[0]);
  537.       }
  538.       break;
  539.  
  540. #ifndef DISABLE_MIB_LOADING
  541.     case 'P':
  542.       cp = snmp_mib_toggle_options(optarg);
  543.       if (cp != NULL) {
  544.         fprintf(stderr, "Unknown parser option to -P: %c.\n", *cp);
  545.         usage(argv[0]);
  546.       }
  547.       break;
  548. #endif /* DISABLE_MIB_LOADING */
  549.  
  550.     case 'v':
  551.       version();
  552.       break;
  553.  
  554.     case 'x':
  555.       if (optarg != NULL) {
  556.         netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID,
  557.                               NETSNMP_DS_AGENT_X_SOCKET, optarg);
  558.       } else {
  559.         usage(argv[0]);
  560.       }
  561.       break;
  562.  
  563.     default:
  564.       fprintf(stderr, "invalid option: -%c\n", arg);
  565.       usage(argv[0]);
  566.       break;
  567.     }
  568.   }
  569.  
  570.   if (do_help) {
  571.     netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
  572.                            NETSNMP_DS_AGENT_NO_ROOT_ACCESS, 1);
  573.   } else {
  574.     /* we are a subagent */
  575.     netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
  576.                            NETSNMP_DS_AGENT_ROLE, 1);
  577.  
  578.     if (!dont_fork) {
  579.       if (netsnmp_daemonize(1, snmp_stderrlog_status()) != 0)
  580.         exit(1);
  581.     }
  582.  
  583.     /* initialize tcpip, if necessary */
  584.     SOCK_STARTUP;
  585.   }
  586.  
  587.   /* initialize the agent library */
  588.   init_agent(app_name);
  589.  
  590.   /* initialize your mib code here */
  591. EOF
  592.  
  593.     # add init routines
  594.     for i in $cfiles ; do
  595.       name=`basename $i | sed 's/\.[co]$//'`
  596.       echo checking for init_$name in $i
  597.       if grep "init_$name" $i ; then
  598.         echo "  init_${name}();" >> $tmpfile
  599.       fi
  600.       shift
  601.     done
  602.  
  603.     # finish file
  604.     cat >> $tmpfile <<EOF
  605.  
  606.   /* $outname will be used to read $outname.conf files. */
  607.   init_snmp("$outname");
  608.  
  609.   if (do_help) {
  610.     fprintf(stderr, "Configuration directives understood:\n");
  611.     read_config_print_usage("  ");
  612.     exit(0);
  613.   }
  614.  
  615.   /* In case we received a request to stop (kill -TERM or kill -INT) */
  616.   netsnmp_running = 1;
  617. #ifdef SIGTERM
  618.   signal(SIGTERM, stop_server);
  619. #endif
  620. #ifdef SIGINT
  621.   signal(SIGINT, stop_server);
  622. #endif
  623.  
  624.   /* main loop here... */
  625.   while(netsnmp_running) {
  626.     agent_check_and_process(1);
  627.   }
  628.  
  629.   /* at shutdown time */
  630.   snmp_shutdown(app_name);
  631.   SOCK_CLEANUP;
  632.   exit(0);
  633. }
  634.  
  635. EOF
  636.       if test "$?" != 0 -o ! -f "$tmpfile" ; then
  637.         echo "Ack.  Can't create $tmpfile."
  638.     exit 1
  639.       fi
  640.       cmd="cc $cflags -DNETSNMP_ENABLE_IPV6 -g -O2 -g -Wall -O2 -DNETSNMP_USE_INLINE -Ulinux -Dlinux=linux  -I. -I${NSC_INCLUDEDIR} -o $outname $tmpfile $cfiles $NSC_LDFLAGS $NSC_LIBDIR $NSC_BASE_AGENT_LIBS $NSC_AGENTLIBS $ldflags"
  641.       echo "running: $cmd"
  642.       `$cmd`
  643.       if test "x$norm" != "x1" ; then
  644.         echo "removing the tmporary code file: $tmpfile"
  645.         rm -f $tmpfile
  646.       else
  647.         echo "leaving the tmporary code file: $tmpfile"
  648.       fi
  649.       if test -f $outname ; then
  650.         echo "subagent program $outname created"
  651.       fi
  652.       ;;
  653.  
  654.     *)
  655.       echo "unknown option $1"
  656.       usage="yes"
  657.       ;;
  658.   esac
  659.   shift
  660.   done
  661. fi
  662.  
  663. if test "x$usage" = "xyes"; then
  664.   echo ""
  665.   echo "Usage:"
  666.   echo "  net-snmp-config [--cflags] [--agent-libs] [--libs] [--version]"
  667.   echo "                  ... [see below for complete flag list]"
  668.   echo ""
  669.   echo "    --version         displays the net-snmp version number"
  670.   echo "    --indent-options  displays the indent options from the Coding Style"
  671.   echo "    --debug-tokens    displays a example command line to search to source"
  672.   echo "                      code for a list of available debug tokens"
  673.   echo ""
  674.   echo "  SNMP Setup commands:"
  675.   echo ""
  676.   echo "    --create-snmpv3-user [-ro] [-A authpass] [-X privpass]"
  677.   echo "                         [-a MD5|SHA] [-x DES|AES] [username]"
  678.   echo ""
  679.   echo "  These options produce the various compilation flags needed when"
  680.   echo "  building external SNMP applications:"
  681.   echo ""
  682.   echo "    --base-cflags     lists additional compilation flags needed"
  683.   echo "    --cflags          lists additional compilation flags needed"
  684.   echo "                      (includes -I. and extra developer warning flags)"
  685.   echo ""
  686.   echo "  These options produce the various link flags needed when"
  687.   echo "  building external SNMP applications:"
  688.   echo ""
  689.   echo "    --libs            lists libraries needed for building applications"
  690.   echo "    --agent-libs      lists libraries needed for building subagents"
  691.   echo ""
  692.   echo "  These options produce various link flags broken down into parts."
  693.   echo "  (Most of the time the simple options above should be used.)"
  694.   echo ""
  695.   echo "    --libdir              path to netsnmp libraries"
  696.   echo ""
  697.   echo "    --base-agent-libs     netsnmp specific agent libraries"
  698.   echo ""
  699.   echo "    --netsnmp-libs        netsnmp specific libraries (with path)"
  700.   echo "    --netsnmp-agent-libs  netsnmp specific agent libraries (with path)"
  701.   echo ""
  702.   echo "    --ldflags             link flags for external libraries"
  703.   echo "    --external-libs       external libraries needed by netsnmp libs"
  704.   echo "    --external-agent-libs external libraries needed by netsnmp agent libs"
  705.   echo ""
  706.   echo "  These options produce various link flags used when linking an"
  707.   echo "  external application against an uninstalled build directory."
  708.   echo ""
  709.   echo "    --build-includes      include path to build/source includes"
  710.   echo "    --build-lib-dirs      link path to libraries"
  711.   echo "    --build-lib-deps      path to libraries for dependency target"
  712.   echo ""
  713.   echo "  Automatted subagent building (produces an OUTPUTNAME binary file):"
  714.   echo "  [this feature has not been tested very well yet.  use at your risk.]"
  715.   echo ""
  716.   echo "    --compile-subagent OUTPUTNAME [--norm] [--cflags flags]"
  717.   echo "                                  [--ldflags flags] mibmodule1.c [...]]"
  718.   echo ""
  719.   echo "         --norm           leave the generated .c file around to read."
  720.   echo "         --cflags flags   extra cflags to use (e.g. -I...)."
  721.   echo "         --ldflags flags  extra ld flags to use (e.g. -L... -l...)."
  722.   echo ""
  723.   echo "  Details on how the net-snmp package was compiled:"
  724.   echo ""
  725.   echo "    --configure-options   display original configure arguments"
  726.   echo "    --prefix              display the installation prefix"
  727.   echo "    --snmpd-module-list   display the modules compiled into the agent"
  728.   echo "    --default-mibs        display default list of MIBs"
  729.   echo "    --default-mibdirs     display default list of MIB directories"
  730.   echo "    --snmpconfpath        display default SNMPCONFPATH"
  731.   echo "    --persistent-directory display default persistent directory"
  732.   echo "    --perlprog            display path to perl for the perl modules"
  733.   echo ""
  734.   exit
  735. fi  
  736.